package com.atguigu.distributed.lock.leecode;

import java.util.HashMap;

/**
 * 和为k的子数组
 */
public class PlusISk {
    public int subarraySum(int[] nums,int k){
        int count = 0,pre = 0;
        HashMap<Integer,Integer> map = new HashMap<>();
        map.put(0,1);
        for (int i = 0; i < nums.length; i++) {
            pre+=nums[i];
            if(map.containsKey(pre-k)){
                count+=map.get(pre-k);
            }
            map.put(pre,map.getOrDefault(pre,0)+1);
        }
        return count;
    }
    /**
     * 此解法为暴力解法，复杂度为O(n2)
     * @param nums
     * @param k
     * @return
     */
    public int subarraySum2(int[] nums, int k) {
        int left =0,right = 0;
        int res = 0;

        for (int i = 0; i < nums.length; i++) {
            int sum = 0;
            for (int j = i; j <nums.length ; j++) {
                sum+=nums[j];
                if(sum==k){
                    res++;
                }
            }
        }
        return res;
    }
}
